---@class GT.player 玩家
---@field player Role 玩家
---@field pid RoleID 玩家
GT.player = class()

---@class player_data 玩家
---@field player Role 玩家

---玩家对象
---@param data player_data
function GT.player:ctor(data)
    self.player = data.player
    self.pid = self:id()
end

---转对象
---@param player Role
---@return GT.player
function GT.player.obj(player)
    if player == nil then
        return nil
    end
    ---@type player_data
    local data = {
        player = player
    }
    return new(GT.player, data)
end

---@return RoleID
function GT.player:__tostring()
    return tostring(self.player)
end

---获取本地玩家
---@return GT.player
function GT.player.get_loc_player()
    return GT.player.get_by_int(GT.player.get_owner_id())
end

--- 获取本地玩家
---@return GT.player
function GT.player.get_client_role()
    return GT.player.obj(game_api.get_client_role())
end

--- 获取中立友善
---@return GT.player
function GT.player.get_player32()
    return GT.player.obj(game_api.get_role_by_int(32))
end

--- 按整型获取玩家对象
---@param role_id UInt32 玩家编号
---@return GT.player
function GT.player.get_by_int(role_id)
    return GT.player.obj(game_api.get_role_by_int(role_id))
end

--- 本地玩家编号
---@return RoleID
function GT.player.get_owner_id()
    return game_api.get_owner_role_id()
end

--- 玩家获取玩家ID
---@return RoleID
function GT.player:api_get_role_id()
    return self.player.api_get_role_id()
end

--- 获取玩家所属阵营ID
---@return Int64
function GT.player:api_get_camp_id()
    return self.player.api_get_camp_id()
end

--- 获取玩家ID数值
---@return UInt32
function GT.player:id()
    return self.player.get_role_id_num()
end

--- 获取玩家所属阵营ID数值
---@return UInt32
function GT.player:get_camp_id_num()
    return self.player.get_camp_id_num()
end

--- 获取玩家名字
---@return Str
function GT.player:get_name()
    return self.player.get_role_name()
end

--- 获取玩家唯一名字
---@return Str
function GT.player:get_role__unique_name()
    return self.player.get_role__unique_name()
end

--- 获取玩家平台等级
---@return Int32
function GT.player:get_role_plat_map_level()
    return self.player.get_role_plat_map_level()
end

--- 获取玩家控制者类型
---@return RoleType
function GT.player:get_role_type()
    return self.player.get_role_type()
end

--- 玩家是否中途加入
---@return Bool
function GT.player:is_middle_join()
    return self.player.is_middle_join()
end

--- 获取玩家所属阵营对象
---@return Camp
function GT.player:api_get_camp()
    return self.player.api_get_camp()
end

--- 获取玩家属性名称
---@param res_key RoleResKey 玩家属性
---@return Str
function GT.player.get_role_res_name(res_key)
    return game_api.get_role_res_name(res_key)
end

--- 玩家设置属性
---@param k Str 属性名
---@param value Int32 属性值
function GT.player:set_attr_val(k, value)
    self.player.set_attr_val(k, value)
end

--- 获取玩家所有单位对象
---@return UnitGroup
function GT.player:get_all_unit_id()
    return self.player.get_all_unit_id()
end

--- 设置玩家经验获得率
---@param rate Float 倍率
function GT.player:set_role_exp_rate(rate)
    self.player.set_role_exp_rate(rate)
end

--- 获得玩家经验倍率
---@return Fixed
function GT.player:get_role_exp_rate()
    return self.player.get_role_exp_rate()
end

--- 设置玩家出生点
---@param point Point 点
function GT.player:set_role_spawn_point(point)
    self.player.set_role_spawn_point(point)
end

--- 获取玩家出生点
---@return FVector3
function GT.player:get_role_spawn_point()
    return self.player.get_role_spawn_point()
end

--- 设置玩家队伍ID
---@param new_camp Camp 队伍ID
function GT.player:api_set_camp(new_camp)
    self.player.api_set_camp(new_camp)
end

--- 设置玩家名字
---@param name Str 名字
function GT.player:set_role_name(name)
    self.player.set_role_name(name)
end

--- 修改玩家资源
---@param res_key RoleResKey 资源名
---@param res_cnt Fixed 资源值
function GT.player:change_role_res(res_key, res_cnt)
    self.player.change_role_res(res_key, res_cnt)
end

--- 设置玩家资源
---@param res_key RoleResKey 资源名
---@param res_cnt Fixed 资源值
function GT.player:set_role_res(res_key, res_cnt)
    self.player.set_role_res(res_key, res_cnt)
end

--- 获得玩家资源
---@param res_key RoleResKey 资源名
---@return Fixed
function GT.player:get_role_res(res_key)
    return self.player.get_role_res(res_key):float()
end

--- 设置玩家群体寻路严格模式
---@param group_navigate_mode Bool 开启群体寻路严格模式
function GT.player:set_group_navigate_mode(group_navigate_mode)
    self.player.set_group_navigate_mode(group_navigate_mode)
end

--- 设置整数型参数到玩家存档栏位
---@param index Int32 玩家存档栏位
---@param value Int32 整型参数
function GT.player:set_save_data_int_value(index, value)
    self.player.set_save_data_int_value(index, value)
end

--- 设置实数型参数到玩家存档栏位
---@param index Int32 玩家存档栏位
---@param value Fixed 实数型参数
function GT.player:set_save_data_fixed_value(index, value)
    self.player.set_save_data_fixed_value(index, value)
end

--- 设置布尔型参数到玩家存档栏位
---@param index Int32 玩家存档栏位
---@param value Bool 布尔型参数
function GT.player:set_save_data_bool_value(index, value)
    self.player.set_save_data_bool_value(index, value)
end

--- 设置字符串型参数到玩家存档栏位
---@param index Int32 玩家存档栏位
---@param value Str 字符串型参数
function GT.player:set_save_data_str_value(index, value)
    self.player.set_save_data_str_value(index, value)
end

--- 设置表型参数到玩家存档栏位
---@param index Int32 玩家存档栏位
---@param value Table 表型参数
function GT.player:set_save_data_table_value(index, value)
    self.player.set_save_data_table_value(index, value)
end

--- 上传玩家存档数据
function GT.player:upload_save_data()
    self.player.upload_save_data()
end

--- 增加当前地图的指定key的存档值
---@param key Str 全局存档key值
---@param value Int32 增加的数值
function GT.player:add_global_map_archive_data(key, value)
    self.player.add_global_map_archive_data(key, value)
end

--- 获取玩家指定的全局存档key值对应排行榜的排名
---@param rank_key Str 全局存档key值
---@return Int32
function GT.player:get_player_rank_num(rank_key)
    return self.player.get_player_rank_num(rank_key)
end

--- 获取玩家指定的个人存档栏位对应排行榜的排名
---@param archive_key Int32 玩家存档栏位
---@return Int32
function GT.player:get_player_archive_rank_num(archive_key)
    return self.player.get_player_archive_rank_num(archive_key)
end

--- 下载玩家存档数据
function GT.player:download_save_data()
    self.player.download_save_data()
end

--- 重置下载档案数据回调
function GT.player:reset_download_save_data_callback()
    self.player.reset_download_save_data_callback()
end

--- 读取整数型玩家存档数据
---@param index Int32 玩家存档栏位
---@return Int32
function GT.player:get_save_data_int_value(index)
    return self.player.get_save_data_int_value(index)
end

--- 读取实数型玩家存档数据
---@param index Int32 玩家存档栏位
---@return Fixed
function GT.player:get_save_data_fixed_value(index)
    return self.player.get_save_data_fixed_value(index)
end

--- 读取布尔型玩家存档数据
---@param index Int32 玩家存档栏位
---@return Bool
function GT.player:get_save_data_bool_value(index)
    return self.player.get_save_data_bool_value(index)
end

--- 读取字符串型玩家存档数据
---@param index Int32 玩家存档栏位
---@return Str
function GT.player:get_save_data_str_value(index)
    return self.player.get_save_data_str_value(index)
end

--- 读取表型玩家存档数据
---@param index Int32 玩家存档栏位
---@return Table
function GT.player:get_save_data_table_value(index)
    return self.player.get_save_data_table_value(index)
end

--- 玩家使用收费道具
---@param cnt UInt32 数量
---@param no StoreKey 收费道具KEY
function GT.player:api_use_store_item(cnt, no)
    self.player.api_use_store_item(cnt, no)
end

--- 获取玩家收费道具数量
---@param no StoreKey 收费道具key
---@return UInt32
function GT.player:get_store_item_cnt(no)
    return self.player.get_store_item_cnt(no)
end

--- 玩家是否拥有单位的可见性
---@param unit Unit 单位
---@return Bool
function GT.player:get_visibility_of_unit(unit)
    return self.player.get_visibility_of_unit(unit)
end

--- 修改玩家科技等级
---@param tech_no TechKey 科技编号
---@param delta_lv Int32 变化等级
function GT.player:api_change_tech_level(tech_no, delta_lv)
    self.player.api_change_tech_level(tech_no, delta_lv)
end

--- 修改玩家科技等级
---@param tech_no TechKey 科技编号
---@param lv Int32 等级
function GT.player:api_set_tech_level(tech_no, lv)
    self.player.api_set_tech_level(tech_no, lv)
end

--- 获取玩家科技等级
---@param tech_no TechKey 科技编号
---@return UInt32
function GT.player:api_get_tech_level(tech_no)
    return self.player.api_get_tech_level(tech_no)
end

--- 点对于玩家是否可见
---@param point FPoint 点
---@return Bool
function GT.player:is_point_visible_to_player(point)
    return self.player.is_point_visible_to_player(point)
end

--- 点是否在迷雾中
---@param point FPoint 点
---@return Bool
function GT.player:is_point_in_fog(point)
    return self.player.is_point_in_fog(point)
end

--- 点是否在黑色阴影中
---@param point FPoint 点
---@return Bool
function GT.player:is_point_in_shadow(point)
    return self.player.is_point_in_shadow(point)
end

--- 获取玩家状态
---@return RoleStatus
function GT.player:get_role_status()
    return self.player.get_role_status()
end

--- 设置玩家是否是敌对关系
---@param role Role 玩家
---@param is_enemy Role 玩家
function GT.player:set_role_hostility(role, is_enemy)
    self.player.set_role_hostility(role, is_enemy)
end

--- 玩家是否是同盟关系
---@param role Role 玩家
---@return Bool
function GT.player:players_is_alliance(role)
    return self.player.players_is_alliance(role)
end

--- 玩家是否是敌对关系
---@param role Role 玩家
---@return Bool
function GT.player:players_is_enemy(role)
    return self.player.players_is_enemy(role)
end

--- 原始玩家对目标玩家开放视野
---@param role_2 Role 玩家
---@return Bool
function GT.player:share_source_player_vision_to_target(role_2)
    return self.player.share_source_player_vision_to_target(role_2)
end

--- 原始玩家对目标玩家关闭视野
---@param role_2 Role 玩家
---@return Bool
function GT.player:close_source_player_vision_to_target(role_2)
    return self.player.close_source_player_vision_to_target(role_2)
end

--- 原始单位对目标玩家开放视野
---@param unit Unit 单位
---@return Bool
function GT.player:share_source_unit_vision_to_target(unit)
    return self.player.share_source_unit_vision_to_target(unit)
end

--- 原始单位对目标玩家关闭视野
---@param unit Unit 单位
---@return Bool
function GT.player:close_source_unit_vision_to_target(unit)
    return self.player.close_source_unit_vision_to_target(unit)
end

--- 选中单位或单位组
---@param unit_or_unit_groupd DynamicTypeMeta 单位或单位组
function GT.player:role_select_unit(unit_or_unit_groupd)
    self.player.role_select_unit(unit_or_unit_groupd)
end

--- 开/关玩家鼠标的点选
---@param value Bool 开/关
function GT.player:set_role_mouse_left_click(value)
    self.player.set_role_mouse_left_click(value)
end

--- 开/关玩家的鼠标的框选
---@param value Bool 开/关
function GT.player:set_role_mouse_move_select(value)
    self.player.set_role_mouse_move_select(value)
end

--- 开/关玩家的鼠标滚轮
---@param value Bool 开/关
function GT.player:set_role_mouse_wheel(value)
    self.player.set_role_mouse_wheel(value)
end

--- 设置玩家暗角开关
---@param value Bool 暗角开关
function GT.player:set_role_vignetting_enable(value)
    self.player.set_role_vignetting_enable(value)
end

--- 设置玩家暗角大小
---@param value Float 暗角大小
function GT.player:set_role_vignetting_size(value)
    self.player.set_role_vignetting_size(value)
end

--- 设置玩家暗角呼吸周期
---@param value Float 呼吸周期
function GT.player:set_role_vignetting_breath_rate(value)
    self.player.set_role_vignetting_breath_rate(value)
end

--- 设置玩家暗角变化幅度
---@param value Float 变化幅度
function GT.player:set_role_vignetting_change_range(value)
    self.player.set_role_vignetting_change_range(value)
end

--- 设置玩家暗角颜色
---@param r Float R
---@param g Float G
---@param b Float B
---@param interval Float Interval
function GT.player:set_role_vignetting_color(r, g, b, interval)
    self.player.set_role_vignetting_color(r, g, b, interval)
end

--- 设置玩家的基础操作快捷键（过滤掉禁止修改的）
---@param game_func_id EditableGameFunc 可编辑操作
---@param normal_key NormalKey 功能键
---@param record_key RecordKey 辅助键
function GT.player:api_set_role_editable_game_func(game_func_id, normal_key, record_key)
    self.player.api_set_role_editable_game_func(game_func_id, normal_key, record_key)
end

--- 设置玩家的基础操作开关（包含所有基础操作）
---@param game_func_id AllGameFunc 所有操作
---@param is_enable Bool 开/关
function GT.player:api_set_role_all_game_func_enable(game_func_id, is_enable)
    self.player.api_set_role_all_game_func_enable(game_func_id, is_enable)
end

--- 基础操作响应的快捷键是否已被占用（过滤掉禁止修改的）
---@param normal_key NormalKey 功能键
---@param record_key RecordKey 辅助键
---@return Bool
function GT.player:api_is_conf_of_editable_game_func(normal_key, record_key)
    return self.player.api_is_conf_of_editable_game_func(normal_key, record_key)
end

--- 获取玩家响应键盘按键的基础操作（过滤掉禁止修改的）
---@param normal_key NormalKey 功能键
---@param record_key RecordKey 辅助
---@return EditableGameFunc
function GT.player:api_get_editable_game_func_of_shortcut(normal_key, record_key)
    return self.player.api_get_editable_game_func_of_shortcut(normal_key, record_key)
end

--- 设置玩家布尔埋点数据
---@param key Int64 布尔key
---@param value Bool 布尔值
function GT.player:set_bool_hit_point_data(key, value)
    self.player.set_bool_hit_point_data(key, value)
end

--- 设置玩家整型埋点数据
---@param key Int64 整型key
---@param value Int64 整数
function GT.player:set_int_hit_point_data(key, value)
    self.player.set_int_hit_point_data(key, value)
end

--- 设置跟随距离
---@param follow_distance Fixed 跟随距离
function GT.player:api_set_follow_distance(follow_distance)
    self.player.api_set_follow_distance(follow_distance)
end

--- 为玩家结束游戏
---@param result Str 战斗结果
---@param show Bool 显示结束面板
---@param send Bool 是否上传玩家排行榜分数
---@param score Int32 排行榜分数
---@param accumulate Bool 是否累积计算分数
function GT.player:set_melee_result_by_role(result, show, send, score, accumulate)
    game_api.set_melee_result_by_role(self.player, result, show, send, score, accumulate)
end

--- 玩家是否加入游戏
---@return Bool
function GT.player:role_in_game()
    return game_api.role_in_game(self.player)
end

--- 设置智能施法
---@param value Bool 开启/关闭
function GT.player:set_simple_cast(value)
    game_api.set_simple_cast(self.player, value)
end

--- 获取智能施法
---@return Bool
function GT.player:get_simple_cast()
    return game_api.get_simple_cast(self.player)
end

--- 获取客户端智能施法
---@return Bool
function GT.player:get_client_simple_cast()
    return game_api.get_client_simple_cast(self.player)
end

--- 获取玩家平台头像
---@return Int32
function GT.player:get_role_platform_icon()
    return game_api.get_role_platform_icon(self:api_get_role_id())
end

--- 获取玩家平台模型
---@return ModelKey
function GT.player:get_role_platform_model()
    return game_api.get_role_platform_model(self:api_get_role_id())
end

--- 打开/关闭自动施法
---@param is_open Bool 是否打开
function GT.player:set_smart_cast_ability(is_open)
    game_api.set_smart_cast_ability(self.player, is_open)
end

--- 设置画风
---@param post_style_type PostEffect 画风
function GT.player:set_post_effect(post_style_type)
    game_api.set_post_effect(self.player, post_style_type)
end

--- 设置玩家的声音主单位
---@param unit Unit 单位
function GT.player:set_role_micro_unit(unit)
    game_api.set_role_micro_unit(self.player, unit)
end

--- 关闭【玩家】的附近语音聊天
function GT.player:close_role_micro_unit()
    game_api.close_role_micro_unit(self.player)
end

--- 设置【玩家】的同阵营语音聊天收听开关为【布尔】
---@param is_open Bool 开关
function GT.player:set_role_camp_sound_switch(is_open)
    game_api.set_role_camp_sound_switch(self.player, is_open)
end

--- 设置【玩家】的同阵营语音聊天发言开关为【布尔】
---@param is_open Bool 开关
function GT.player:set_role_camp_micro_switch(is_open)
    game_api.set_role_camp_micro_switch(self.player, is_open)
end

--- 设置【玩家】的所有人语音聊天收听开关为【布尔】
---@param is_open Bool 开关
function GT.player:set_role_all_sound_switch(is_open)
    game_api.set_role_all_sound_switch(self.player, is_open)
end

--- 设置【玩家】的所有人语音聊天发言开关为【布尔】
---@param role Role 玩家
---@param is_open Bool 开关
function GT.player:set_role_all_micro_switch(is_open)
    game_api.set_role_all_micro_switch(self.player, is_open)
end

--- 修改玩家主控单位
---@param unit Unit 单位
function GT.player:change_highlight_unit_of_role(unit)
    game_api.change_highlight_unit_of_role(self.player, unit)
end

--- 设置玩家主控单位
---@param unit Unit 单位
function GT.player:set_highlight_unit_of_role(unit)
    game_api.set_highlight_unit_of_role(self.player, unit)
end

--- 获取玩家主控单位
function GT.player:get_highlight_unit_of_role()
    return game_api.get_highlight_unit_of_role(self.player)
end

--- 保存编辑器局内设置
function GT.player:save_client_setting()
    game_api.save_client_setting(self.player)
end

--- 保存玩家设置
function GT.player:save_game_setting()
    game_api.save_game_setting(self.player)
end

--- 是否让{玩家}的智能施法使用指示器
---@param use_skill_pointer Bool 是否使用指示器
function GT.player:set_smart_cast_with_pointer(player, use_skill_pointer)
    game_api.set_smart_cast_with_pointer(self.player, use_skill_pointer)
end

--- 设置{玩家}的普攻预览状态为{开启/关闭}
---@param is_open Bool 是否打开
function GT.player:set_preview_common_atk_range(player, is_open)
    game_api.set_preview_common_atk_range(self.player, is_open)
end

--- 设置鼠标移动镜头模式
---@param value Bool 开启/关闭
function GT.player:set_mouse_move_camera_mode(value)
    game_api.set_mouse_move_camera_mode(self.player, value)
end

--- 设置鼠标移动镜头速度
---@param value Float 移动速度
function GT.player:set_mouse_move_camera_speed(value)
    game_api.set_mouse_move_camera_speed(self.player, value)
end

--- 设置键盘移动镜头速度
---@param value Float 移动速度
function GT.player:set_key_move_camera_speed(value)
    game_api.set_key_move_camera_speed(self.player, value)
end

--- 修改玩家的地表纹理
---@param bool_value Bool 布尔值
function GT.player:set_local_terrain_visible(bool_value)
    game_api.set_local_terrain_visible(self.player, bool_value)
end

--- 设置背景音乐开关
---@param value Bool 打开/关闭
function GT.player:open_background_music(value)
    game_api.open_background_music(self.player, value)
end

--- 设置战斗音乐开关
---@param value Bool 打开/关闭
function GT.player:open_battle_music(value)
    game_api.open_battle_music(self.player, value)
end

--- 设置背景音乐音量
---@param value Int32 音量
function GT.player:set_background_music_volume(value)
    game_api.set_background_music_volume(self.player, value)
end

--- 设置战斗音效音量
---@param value Int32 音量
function GT.player:set_battle_music_volume(value)
    game_api.set_battle_music_volume(self.player, value)
end

--- 为玩家设置滤镜效果
---@param value UInt64 id
function GT.player:set_role_color_grading(value)
    game_api.set_role_color_grading(self.player, value)
end

--- 设置快捷键
---@param plan Int32 方案
---@param key Str 快捷键key
---@param value1 Int32 键盘码1
---@param value2 Int32 键盘码2
function GT.player:set_shortcut(plan, key, value1, value2)
    game_api.set_shortcut(self.player, plan, key, value1, value2)
end

--- 获取快捷键
---@param plan Int32 方案
---@param key Str 快捷键key
---@return IntList
function GT.player:get_shortcut(plan, key)
    game_api.get_shortcut(self.player, plan, key)
end

--- 获取玩家属性Icon
---@param res_key RoleResKey 玩家属性
---@return Int32
function GT.player.get_role_res_icon(res_key)
    return game_api.get_role_res_icon(res_key)
end



--- 屏蔽全局键盘事件
---@param block Bool 是否屏蔽
function GT.player:block_global_key_event(role, block)
    game_api.block_global_key_event(self.player, block)
end

--- 屏蔽全局鼠标事件
---@param block Bool 是否屏蔽
function GT.player:block_global_mouse_event(block)
    game_api.block_global_mouse_event(self.player, block)
end

--- 屏蔽触发器键盘事件
---@param block Bool 是否屏蔽
function GT.player:block_trigger_key_event(role, block)
    game_api.block_trigger_key_event(self.player, block)
end

--- 屏蔽触发器鼠标事件
---@param block Bool 是否屏蔽
function GT.player:block_trigger_mouse_event(block)
    game_api.block_trigger_mouse_event(self.player, block)
end

--- 玩家鼠标屏幕位置X的窗口占比
---@return Float
function GT.player:get_role_ui_x_per()
    return game_api.get_role_ui_x_per(self.player)
end

--- 玩家鼠标屏幕位置Y的窗口占比
---@return Float
function GT.player:get_role_ui_y_per()
    return game_api.get_role_ui_y_per(self.player)
end

--- 玩家鼠标屏幕位置X
---@param role RoleID 玩家ID
---@return Int32
function GT.player:get_player_ui_pos_x()
    return game_api.get_player_ui_pos_x(self.player)
end

--- 玩家鼠标屏幕位置Y
---@return Int32
function GT.player:get_player_ui_pos_y()
    return game_api.get_player_ui_pos_y(self.player)
end

--- 玩家鼠标位置
---@return GT.point
function GT.player:get_player_pointing_pos(role)
    ---@type point_data
    local data = {
        point = game_api.get_player_ui_pos_y(self.player),
    }
    return new(GT.point, data)
end

--- 玩家摄像机朝向
---@return GT.point
function GT.player:get_player_camera_direction()
    ---@type point_data
    local data = {
        point = game_api.get_player_camera_direction(self.player),
    }
    return new(GT.point, data)
end

--- 玩家摄像机中心射线检测
---@return GT.point
function GT.player:get_camera_center_raycast()
    ---@type point_data
    local data = {
        point = game_api.get_camera_center_raycast(self.player),
    }
    return new(GT.point, data)
end

--- 玩家是否按下按键
---@param key KeyboardKey 键盘按键
---@return Bool
function GT.player:player_key_is_pressed(key)
    return game_api.player_key_is_pressed(self.player, key)
end

--- 播放UI控件时间轴动画
---@param uiak UIAnimKey UI动画
---@param f Float 播放速度
---@param b Bool 是否循环
function GT.player:play_ui_comp_anim(uiak, f, b)
    game_api.play_ui_comp_anim(self.player, uiak, f, b)
end

--- 停止UI控件时间轴动画
---@param anim_id UIAnimKey UI动画
function GT.player:stop_ui_comp_anim()
    game_api.stop_ui_comp_anim(self.player, anim_id)
end

--- 设置小地图替代图片
---@param image_id Int32 图片id
function GT.player:change_mini_map_img(image_id)
    game_api.change_mini_map_img(self.player, image_id)
end

--- 设置小地图替代图片(图片类型)
---@param image_id Texture 图片
function GT.player:change_mini_map_img_with_icon(image_id)
    game_api.change_mini_map_img_with_icon(self.player, image_id)
end

--- 设置小地图颜色显示模式
---@param color_type Int32 显示模式
function GT.player:change_mini_map_color_type(color_type)
    game_api.change_mini_map_img_with_icon(self.player, color_type)
end

--- 强制踢出玩家
---@param reason Str 踢出理由
function GT.player:role_force_quit(reason)
    game_api.role_force_quit(self.player, reason)
end

--- 获取[玩家]的玩家昵称
---@return Str
function GT.player:get_player_nick_name()
    return game_api.get_player_nick_name(self.player)
end

--- 获取[玩家]的玩家全量昵称
---@return Str
function GT.player:get_player_full_nick_name()
    return game_api.get_player_full_nick_name(self.player)
end

--- 获取[玩家]的玩家aid
---@return Str
function GT.player:get_player_plat_aid()
    return game_api.get_player_plat_aid(self.player)
end

--- 获取[玩家]的玩家图像
---@return Str
function GT.player:get_player_icon()
    return game_api.get_player_icon(self.player)
end

--- 震动设备
---@param time Fixed 震动时间
function GT.player:shake_phone(time)
    game_api.shake_phone(self.player, time)
end

--- 为<玩家>输入排行榜<分数>
---@param score Int32 战斗内排行榜分数
function GT.player:set_role_rank_score(score)
    game_api.set_role_rank_score(self.player, score)
end

--- 为玩家打开收费道具商店
function GT.player:open_charge_item_store_for_role()
    game_api.open_charge_item_store_for_role(self.player)
end

--- 设置玩家的商店控件的目标商店单位
---@param comp_name Str 控件名
---@param shop_unit Unit 商店单位
---@param index Unit 页签索引
function GT.player:set_shop_comp_bind_shop_unit(comp_name, shop_unit, index)
    game_api.set_shop_comp_bind_shop_unit(self.player, comp_name, shop_unit, index)
end

--- 设置玩家的合成控件的参数并刷新
---@param comp_name Str 控件名
---@param item_id ItemID 合成目标物品id
---@param shop_unit Unit 商店单位
---@param buy_unit Unit 购买单位
function GT.player:set_compose_comp_refresh(comp_name, item_id, shop_unit, buy_unit)
    game_api.set_compose_comp_refresh(self.player, comp_name, item_id, shop_unit, buy_unit)
end

--- 打开技能指示器
---@param ability GT.ability 技能
function GT.player:start_skill_pointer(ability)
    game_api.start_skill_pointer(self.player, ability.ability)
end

--- 关闭技能指示器
---@param ability Ability 技能
function GT.player:stop_skill_pointer(ability)
    game_api.stop_skill_pointer(self.player, ability.ability)
end

--- 打开技能指示器
---@param ability Ability 技能
function GT.player:create_preview_skill_pointer(ability)
    game_api.stop_skill_pointer(self.player, ability.ability)
end

--- 关闭技能指示器
function GT.player:clear_preview_skill_pointer()
    game_api.clear_preview_skill_pointer(self.player)
end

--- 震动屏幕
---@param period Float 震动周期
---@param amplitude_vector FVector3 振幅大小
---@param increase_vector FVector3 增幅值
---@param keep_time Float 震动持续时间
function GT.player:start_shake(period, amplitude_vector, increase_vector, keep_time)
    game_api.start_shake(self.player, period, amplitude_vector, increase_vector, keep_time)
end

--- 玩家是否拥有收费道具
---@param no StoreKey 收费道具key
---@return Bool
function GT.player:role_has_store_item(no)
    return game_api.role_has_store_item(self.player, no)
end

--- 玩家下载存档是否回调
---@return Bool
function GT.player:has_download_save_data_callback()
    return game_api.has_download_save_data_callback(self.player)
end

--- 判断玩家单位类型前置条件满足需求
---@param unity_key UnitKey 单位类型
---@return Bool
function GT.player:check_unit_key_precondition(unity_key)
    return game_api.check_unit_key_precondition(self.player, unity_key)
end

--- 判断玩家物品类型前置条件满足需求
---@param item_key ItemKey 物品类型
---@return Bool
function GT.player:check_item_key_precondition(player, item_key)
    return game_api.check_item_key_precondition(self.player, item_key)
end

--- 判断玩家技能类型前置条件满足需求
---@param ability_key AbilityKey 技能类型
---@return Bool
function GT.player:check_ability_key_precondition(player, ability_key)
    return game_api.check_ability_key_precondition(self.player, ability_key)
end

---给玩家发送信息
function GT.player:print_debug(...)
    local str = ''
    local t = { ... }
    for i = 1, #t - 1 do
        str = str .. tostring(t[i]) .. '    '
    end
    str = str .. tostring(t[#t])
    game_api.show_msg_to_role(self.player, tostring(str), false)
end

--- 线性移动镜头(时间)
---@param point GT.point 点
---@param duration number 持续时间
function GT.player:camera_linear_move_duration( point, duration)
    GT.camera.camera_linear_move_duration(self, point, duration, 1)
end
